package crontab

import (
	"github.com/robfig/cron"
)

// StartMoreCron 启动多个定时任务
func StartMoreCron(cronMap map[string]func()) error {
	c := cron.New()
	var err0 error
	for cronExp, cronFun := range cronMap {
		err := c.AddFunc(cronExp, cronFun)
		if err != nil {
			err0 = err
			continue
		}
	}
	c.Start()
	return err0
}

func StartCron(cronExp string, cronFun func()) error {
	c := cron.New()
	// 1、调用cron对象的AddFunc()方法向管理器中添加定时任务。
	// AddFunc()接受两个参数，参数 1 以字符串形式指定触发时间规则，参数 2 是一个无参的函数，每次触发时调用。
	// @every 1s表示每秒触发一次，@every后加一个时间间隔，表示每隔多长时间触发一次。
	err := c.AddFunc(cronExp, cronFun)
	if err != nil {
		return err
	}
	c.Start()
	return nil
}

func StartCronJob(cronExp string, job cron.Job) error {
	c := cron.New()
	// 2、除了直接将无参函数作为回调外，cron还支持Job接口：
	err := c.AddJob(cronExp, job)
	if err != nil {
		return err
	} // 调用cron对象的AddJob()方法将GreetingJob对象添加到定时管理器中
	// 调用c.Start()启动定时循环。
	c.Start()
	return nil
}
